package Song.Han.demo01;

import java.io.FileNotFoundException;
import java.io.IOException;

/*

异常处理方法一：throws关键字
格式：
  修饰符 返回值类型 方法名(参数) throws AAAException,BBBException...{
     throw new AAAException("产生原因");
     throw new BBBException("产生原因");
  }
注意：
    1.throws关键字必须写在方法声明处
    2.throws关键字后面声明的异常必须是Exception或是Exception的子类
    3.如果方法抛出多个异常，则throws关键字后面也必须声明多个异常
        （如果声明的多个异常有子父类关系，那么只需要什么声明父类异常即可）
    4.调用一个声明了异常的方法，我们就必须处理异常
        要么继续使用throws声明抛出，交给方法的调用者处理，最总交给JVM
        要么try...catch自己处理异常

*/
public class Demo04Throws {

    public static void main(String[] args) throws IOException{
        readFile("d:\\\\a.txt");
    }

/*
定义一个方法：
    对传递的文件路径的合法性进行判断：
        如果不是"C:\\a.txt"，那么就抛出文件找不到异常对象，告知方法调用者

注意：
FileNotFoundException是编译异常
*/

/*
    FileNotFoundException extends IOException;
    只需声明IOException
*/
    public static void readFile(String fileName) throws IOException{

        /*
            如果传递的路径不是.txt结尾
            那么就抛出IO异常对象
        */
        if(!fileName.endsWith(".txt")){
            throw new IOException("文件后缀名不正确");
        }

        if(!fileName.equals("C:\\\\a.txt")){
            throw  new FileNotFoundException("传递的文件路径不是C:\\\\a.txt");
        }


        System.out.println("路径正确，读取文件");
    }
}
